package com.zxl.designpattern.structure.proxy;

/**
 * @author zxl
 * @version 1.0
 * @description 汽车采购接口
 *  代理模式：代理模式是一种结构型设计模式，它允许你提供一个对象的替代品或占位符，以控制对该对象的访问。
 *  代理模式通常用于延迟对象的创建、访问控制、远程访问等场景。
 *  代理模式的核心思想是通过引入一个代理对象来控制对真实对象的访问，从而实现对真实对象的保护和增强。
 *  代理模式的主要角色包括：
 *  1. 抽象主题（Subject）：定义了真实主题和代理主题的共同接口，这样代理主题可以代理真实主题。
 *  2. 真实主题（Real Subject）：定义了代理所代表的真实对象，是最终要访问的对象。
 *  3. 代理主题（Proxy Subject）：包含对真实主题的引用，并且提供了与真实主题相同的接口，以便可以替代真实主题。
 *  代理模式的主要优点包括：
 *  1. 控制访问：代理模式可以控制对真实对象的访问，从而实现对真实对象的保护和增强。
 *  2. 延迟加载：代理模式可以延迟对象的创建，从而提高系统的性能。
 *  3. 远程访问：代理模式可以实现远程访问，从而实现分布式系统的开发。
 *  代理模式的主要缺点包括：
 *  1. 增加了系统的复杂度：代理模式需要增加代理对象和真实对象，从而增加系统的复杂度。
 *  2. 性能问题：代理模式可能会导致性能问题，因为代理对象需要额外的处理。
 *  代理模式的主要应用场景包括：
 *  1. 远程访问：代理模式可以实现远程访问，从而实现分布式系统的开发。
 *  2. 延迟加载：代理模式可以延迟对象的创建，从而提高系统的性能。
 *  3. 访问控制：代理模式可以控制对真实对象的访问，从而实现对真实对象的保护和增强。
 *  代理模式的主要实现方式包括：
 *  1. 静态代理：静态代理是指代理对象在编译时就已经确定了，代理对象和真实对象之间的关系是固定的。
 *  2. 动态代理：动态代理是指代理对象在运行时才确定，代理对象和真实对象之间的关系是动态的。
 * @date 2025/5/31 19:07
 */
public interface CarPurchase {

    /**
     * 购买汽车
     * @param carModel 汽车型号
     */
    void purchase(String carModel);
}
